widget: Add private accessor to event controllers
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 6 Feb 2020 14:21:10 +0000 (14:21 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 26 Mar 2020 02:36:03 +0000 (22:36 -0400)
gtk/gtkwidget.c
gtk/gtkwidgetprivate.h

index 5072e46c4eba566f227cd16e44eb2ee95af32010..8b3f4b30fb9e5c5977caaa23c1c79e70cf4af446 100644 (file)
@@ -12023,6 +12023,24 @@ gtk_widget_reset_controllers (GtkWidget *widget)
     }
 }
 
+GList *
+gtk_widget_list_controllers (GtkWidget           *widget,
+                             GtkPropagationPhase  phase)
+{
+  GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+  GList *res = NULL, *l;
+
+  for (l = priv->event_controllers; l; l = l->next)
+    {
+      GtkEventController *controller = l->data;
+
+      if (gtk_event_controller_get_propagation_phase (controller) == phase)
+        res = g_list_prepend (res, controller);
+    }
+
+  return g_list_reverse (res);
+}
+
 static inline void
 gtk_widget_maybe_add_debug_render_nodes (GtkWidget   *widget,
                                          GtkSnapshot *snapshot)
index 2541d35fc6a27243e5adec143cff0f4e4d14e6a3..cd150136eed59ba9343212432743802097e92595 100644 (file)
@@ -302,6 +302,9 @@ gboolean          gtk_widget_has_size_request              (GtkWidget *widget);
 
 void              gtk_widget_reset_controllers             (GtkWidget *widget);
 
+GList *           gtk_widget_list_controllers              (GtkWidget           *widget,
+                                                            GtkPropagationPhase  phase);
+
 gboolean          gtk_widget_query_tooltip                 (GtkWidget  *widget,
                                                             gint        x,
                                                             gint        y,